home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / Yahoo Cinema (ES).ifs < prev    next >
Encoding:
Text File  |  2005-01-02  |  13.0 KB  |  447 lines

  1. // GETINFO SCRIPTING
  2. // Yahoo!Cinema (Spanish) v1.1
  3.  
  4. (**************************************************
  5. * Movie importation script for:                   *
  6. * Yahoo!Cinema (ES), http://es.movies.yahoo.com   *
  7. *                                                 *
  8. * (c) 2003 Andrea Cristaudo achris@tiscalinet.it  *
  9. *                                                 *
  10. * Updated for Spanish Database support and more   *
  11. * info importing by folgui (folgui@bigfoot.com)   *
  12. *                                                 *
  13. * For use with Ant Movie Catalog 3.4.3            *
  14. *  www.antp.be/software/moviecatalog              *
  15. *                                                 *
  16. *  This program is free software; you can         *
  17. *  redistribute it and/or modify it under the     *
  18. *  terms of the GNU General Public License as     *
  19. *  published by the Free Software Foundation;     *
  20. *  either version 2 of the License, or (at your   *
  21. *  option) any later version.                     *
  22. ***************************************************)
  23.  
  24. program YahooCinema;
  25. const
  26. LargePic = True; // Import Large Picture
  27. var
  28. MovieName: string;
  29. TheMovieAddress: string;
  30.  
  31. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  32. var
  33. i: Integer;
  34. begin
  35. result := -1;
  36. if StartAt < 0 then
  37.   StartAt := 0;
  38. for i := StartAt to List.Count-1 do
  39.   if Pos(Pattern, List.GetString(i)) <> 0 then
  40.   begin
  41.    result := i;
  42.    Break;
  43.   end;
  44. end;
  45.  
  46. function TextBetween(var S: string; StartTag: string; EndTag: string): string;
  47. var
  48.   InitialPos: Integer;
  49. begin
  50.   InitialPos := Pos(StartTag, S);
  51.   Delete(S, 1, InitialPos + Length(StartTag) - 1);
  52.   InitialPos := Pos(EndTag, S);
  53.   result := copy(S, 1, InitialPos - 1);
  54.   Delete(S, 1, InitialPos + 1);
  55. end;
  56.  
  57. procedure AnalyseLargePicPage(Address: string);
  58. var
  59. Page: TStringList;
  60. LineNr: integer;
  61. Line: string;
  62. ImageURL: string;
  63. begin
  64. Page := TStringList.Create;
  65. Page.Text := GetPage(Address);
  66. LineNr := FindLine('<img src="http://eur.news1.yimg.com/eur.yimg.com/', Page, 0);
  67. If LineNr <> -1 then
  68.  begin
  69.   Line := Page.GetString(LineNr);
  70.   ImageURL := TextBetween (Line, '<img src="', '"');
  71.   GetPicture (ImageURL, False);
  72.  end
  73. Page.Free;
  74. end;
  75.  
  76. procedure AnalyzePage(Address: string);
  77. var
  78. Page: TStringList;
  79. LineNr: integer;
  80. BeginPos: integer;
  81. begin
  82. Page := TStringList.Create;
  83. Page.Text := GetPage(Address);
  84. LineNr := FindLine('<font face=arial,helvetica size=+1><b>Resultados de b·squeda</b></font>', Page, 0);
  85. if LineNr = -1 then
  86. begin
  87.   SetField(fieldURL, Address);
  88.   AnalyzeMoviePage(Page);
  89. end
  90. else
  91. begin
  92.   PickTreeClear;
  93.   AddMoviesTitles(Page);
  94.   if TheMovieAddress='' then
  95.   begin
  96.    if PickTreeExec(Address) then
  97.    begin
  98.     SetField(fieldURL, Address);
  99.     Page.Text := GetPage(Address);
  100.     AnalyzeMoviePage(Page);
  101.    end;
  102.   end
  103.   else
  104.   begin
  105.    SetField(fieldURL, TheMovieAddress);
  106.    Page.Text := GetPage(TheMovieAddress);
  107.    AnalyzeMoviePage(Page);
  108.   end;
  109. end;
  110. Page.Free;
  111. end;
  112.  
  113. procedure AnalyzeMoviePage(Page: TStringList);
  114. var
  115.  Fine: Integer;
  116.  EndActors: Integer;
  117.  EndProducers: Integer;
  118.  EndMusics: Integer;
  119.  EndDirectors: Integer;
  120.  EndPhotographers: Integer;
  121.  EndWriters: Integer;
  122.  EndRating: Integer;
  123.  strActors: string;
  124.  strComments: string;
  125.  strProducers: string;
  126.  strMusics: string;
  127.  strDirectors: string;
  128.  strPhotographers: string;
  129.  strWriters: string;
  130.  strTemp: string;
  131.  Line: string;
  132.  ImageURL: string;
  133.  LineNr: Integer;
  134.  BeginPos, EndPos: Integer;
  135.  Field: integer;
  136.  irate: integer;
  137. begin
  138. Page.Text := StringReplace(Page.Text, ' ', '');
  139. Fine := 0;
  140.   LineNr := FindLine('<FONT color=white face="arial, helvetica"><b>', Page, 0);
  141. if LineNr > -1 then
  142. begin
  143.   //Translated Title
  144.   Line := Page.GetString(LineNr);
  145.   HTMLRemoveTags(Line);
  146.   Line := StringReplace(Line,'"','');
  147.   SetField(fieldTranslatedTitle,Line);
  148.  
  149.   repeat
  150.    LineNr := LineNr + 1;
  151.    Line := Page.GetString(LineNr);
  152.    //GetPicture of Movie
  153.    if Not LargePic then
  154.     // Import Small Picture
  155.     begin
  156.       if pos('html"><img src="http:', Line) <> 0 then
  157.        begin
  158.         Delete(Line, 1, pos('<img ', Line) + 9);
  159.         Delete(Line, pos('" border=', Line), pos('</a>', Line) + 1);
  160.         GetPicture(Line, False);
  161.        end
  162.     end
  163.    // Import Large Picture
  164.    else
  165.     begin
  166.       if pos('Agrandar la imagen</a>', Line) <> 0 then
  167.        begin
  168.         ImageURL := TextBetween(Line, '<a href="', '">Agrandar la imagen</a>');
  169.         AnalyseLargePicPage('http://es.movies.yahoo.com' + ImageURL);
  170.       end
  171.     end
  172.    //Original Title
  173.    if pos('<b>Tφtulo original:</b>', Line) <> 0 then
  174.     begin
  175.      HTMLRemoveTags(Line);
  176.      Delete(Line, 1, 16);
  177.      Line := StringReplace(Line,'"','');
  178.      SetField(fieldOriginalTitle, Line);
  179.     end
  180.    //Country and Year
  181.    else if pos('<b>Paφs y a±o:</b>',Line) <> 0 then
  182.     begin
  183.      LineNr := LineNr + 1;
  184.      Line := Page.GetString(LineNr);
  185.      SetField(fieldCountry, Line);
  186.      LineNr := LineNr + 1;
  187.      Line := Page.GetString(LineNr);
  188.      SetField(fieldYear, copy(Line, 2, 4));
  189.     end
  190.    //Category and Length
  191.    else if pos('<b>GΘnero:</b>', Line) <> 0 then
  192.     begin
  193.      HTMLRemoveTags(Line);
  194.      Delete(Line, 1, 7);
  195.      SetField(fieldCategory, Line);
  196.      LineNr := LineNr + 1;
  197.      Line := Page.GetString(LineNr);
  198.      HTMLRemoveTags(Line);
  199.      Delete(Line, 1, 9);
  200.      SetField(fieldLength, copy(Line, 1, 3));
  201.      If GetField(fieldLength) = '' then
  202.       SetField(fieldLength, copy(Line, 1, 2));
  203.     end
  204.    //Rating
  205.    else if pos('<b>Crφtica:</b>', Line) <> 0 then
  206.     begin
  207.      irate := 0;
  208.      LineNr := LineNr + 1;
  209.      Line := Page.GetString(LineNr);
  210.      EndRating := pos('<img src="http://eur.i1.yimg.com/eur.yimg.com/i/de/mo/1sg.gif" width=10 height=9>', Line);
  211.      while EndRating = 0 do
  212.       begin
  213.        irate := irate + 1;
  214.        LineNr := LineNr + 1;
  215.        Line := Page.GetString(LineNr);
  216.        EndRating := pos('<img src="http://eur.i1.yimg.com/eur.yimg.com/i/de/mo/1sg.gif" width=10 height=9>', Line);
  217.       end
  218.      SetField(fieldRating, IntToStr(irate*2));
  219.     end
  220.    //Description
  221.    else if pos('<b>Sinopsis:</b>', Line) <> 0 then
  222.     begin
  223.      LineNr := LineNr + 2;
  224.      Line := Page.GetString(LineNr);
  225.      HtmlRemoveTags(Line);
  226.      SetField(fieldDescription, Line);
  227.     end
  228.    //List of Actors
  229.    else if pos('<b>Actor / Actriz:</b>', Line) <> 0 then
  230.     begin
  231.      strActors := '';
  232.      LineNr := LineNr + 2;
  233.      Line := Page.GetString(LineNr);
  234.      EndActors := pos('</font></td></tr>', Line);
  235.      while EndActors = 0 do
  236.       begin
  237.        HtmlRemoveTags(Line);
  238.        if strActors = '' then
  239.         strActors := Line
  240.        else
  241.         strActors := strActors + ' ' + Line;
  242.        LineNr := LineNr + 1;
  243.        Line := Page.GetString(LineNr);
  244.        EndActors := pos('</font></td></tr>', Line);
  245.       end
  246.      SetField(fieldActors, strActors);
  247.     end
  248.    else if pos('Montador:</b>', Line) <> 0 Then
  249.     begin
  250.      LineNr := LineNr + 2;
  251.      Line := Page.GetString(LineNr);
  252.      HtmlRemoveTags(Line);
  253.      strComments := 'Montaje: ' + Line + #13#10;
  254.     end
  255.    // Music for Comments
  256.    else if pos('<b>Musica:</b>', Line) <> 0 then
  257.     begin
  258.      strMusics := '';
  259.      LineNr := LineNr + 2;
  260.      Line := Page.GetString(LineNr);
  261.      EndMusics := pos('</font></td></tr>', Line);
  262.      while EndMusics = 0 do
  263.       begin
  264.        HtmlRemoveTags(Line);
  265.        if strMusics = '' then
  266.         strMusics := Line
  267.        else
  268.         strMusics := strMusics + ' ' + Line;
  269.        LineNr := LineNr + 1;
  270.        Line := Page.GetString(LineNr);
  271.        EndMusics := pos('</font></td></tr>', Line);
  272.       end
  273.      strComments := strComments + 'M·sica: ' + strMusics + #13#10;
  274.     end
  275.    // Aditional Music Author for Comments
  276.    else if pos('<b>Compositor (m·sica adicional):</b>', Line) <> 0 then
  277.     begin
  278.      LineNr := LineNr + 2;
  279.      Line := Page.GetString(LineNr);
  280.      HtmlRemoveTags(Line);
  281.      strComments := strComments + 'Compositor: ' + Line + #13#10;
  282.     end
  283.    //Director
  284.    else if pos('<b>Director:</b>', Line) <> 0 then
  285.     begin
  286.      strDirectors := '';
  287.      LineNr := LineNr + 2;
  288.      Line := Page.GetString(LineNr);
  289.      EndDirectors := pos('</font></td></tr>', Line);
  290.      while EndDirectors = 0 do
  291.       begin
  292.        HtmlRemoveTags(Line);
  293.        if strDirectors = '' then
  294.         strDirectors := Line
  295.        else
  296.         strDirectors := strDirectors + ' ' + Line;
  297.        LineNr := LineNr + 1;
  298.        Line := Page.GetString(LineNr);
  299.        EndDirectors := pos('</font></td></tr>', Line);
  300.       end
  301.      SetField(fieldDirector, strDirectors);
  302.     end
  303.    //Photography for Comments
  304.    else if pos('<b>Fotografφa:</b>', Line) <> 0 then
  305.     begin
  306.      strPhotographers := '';
  307.      LineNr := LineNr + 2;
  308.      Line := Page.GetString(LineNr);
  309.      EndPhotographers := pos('</font></td></tr>', Line);
  310.      while EndPhotographers = 0 do
  311.       begin
  312.        HtmlRemoveTags(Line);
  313.        if strPhotographers = '' then
  314.         strPhotographers := Line
  315.        else
  316.         strPhotographers := strPhotographers + ' ' + Line;
  317.        LineNr := LineNr + 1;
  318.        Line := Page.GetString(LineNr);
  319.        EndPhotographers := pos('</font></td></tr>', Line);
  320.       end
  321.      strComments := strComments + 'Fotografφa: ' + strPhotographers + #13#10;
  322.     end
  323.    //Screenplay Writer for Comments
  324.    else if (pos('<b>Guionista:</b>', Line) <> 0) Or (pos('<b>Gui≤n', Line) <> 0) then
  325.     begin
  326.      strWriters := '';
  327.      LineNr := LineNr + 2;
  328.      Line := Page.GetString(LineNr);
  329.      EndWriters := pos('</font></td></tr>', Line);
  330.      while EndWriters = 0 do
  331.       begin
  332.        HtmlRemoveTags(Line);
  333.        if strWriters = '' then
  334.         strWriters := Line
  335.        else
  336.         strWriters := strWriters + ' ' + Line;
  337.        LineNr := LineNr + 1;
  338.        Line := Page.GetString(LineNr);
  339.        EndWriters := pos('</font></td></tr>', Line);
  340.       end
  341.      strComments := strComments + 'Guionista: ' + strWriters + #13#10;
  342.     end
  343.    //Producer
  344.    else if (pos('<b>Producci≤n:</b>', Line) <> 0) Or (pos('<b>Productor', Line) <> 0) then
  345.     begin
  346.      strProducers := '';
  347.      LineNr := LineNr + 2;
  348.      Line := Page.GetString(LineNr);
  349.      EndProducers := pos('</font></td></tr>', Line);
  350.      while EndProducers = 0 do
  351.       begin
  352.        HtmlRemoveTags(Line);
  353.        if strProducers = '' then
  354.         strProducers := Line
  355.        else
  356.         strProducers := strProducers + ' ' + Line;
  357.        LineNr := LineNr + 1;
  358.        Line := Page.GetString(LineNr);
  359.        EndProducers := pos('</font></td></tr>', Line);
  360.       end
  361.      SetField(fieldProducer, strProducers);
  362.     end
  363.    // More Comments
  364.    else if pos('<b>Notas de Producci≤n</b>', Line) <> 0 then
  365.     begin
  366.      LineNr := LineNr + 2;
  367.      Line := Page.GetString(LineNr);
  368.      strTemp := TextBetween(Line, '<FONT face=arial size=-1>', '<a href="');
  369.      HtmlDecode(strTemp);
  370.      strComments := strComments + '------------------------------';
  371.      strComments := strComments + #13#10 + strTemp;
  372.     end
  373.    // More Comments
  374.    else if pos('<b>Crφtica</b>', Line) <> 0 then
  375.     begin
  376.      LineNr := LineNr + 2;
  377.      Line := Page.GetString(LineNr);
  378.      strTemp := TextBetween(Line, '<FONT face=arial size=-1>', '<a href="');
  379.      HtmlDecode(strTemp);
  380.      strComments := strComments + '------------------------------';
  381.      strComments := strComments + #13#10 + strTemp;
  382.     end
  383.    else if Line = '</html>' then
  384.     Fine := 1;
  385.   until Fine = 1;
  386.   SetField(fieldComments, strComments);
  387. end;
  388. DisplayResults;
  389. end;
  390.  
  391. procedure AddMoviesTitles(Page: TStringList);
  392. var
  393. LineNr: Integer;
  394. NewLineNr: Integer;
  395. Line: string;
  396. MovieTitle, MovieAddress: string;
  397. BeginPos, EndPos: Integer;
  398. begin
  399. TheMovieAddress := '*';
  400. LineNr := 0;
  401. LineNr := FindLine('<font face=arial,helvetica><b>Resultado de pelφculas</b>',Page,LineNr);
  402. LineNr := LineNr + 3;
  403. PickTreeAdd('Resultados encontrados:','');
  404. while LineNr > 2 do
  405. begin
  406.   Line := Page.GetString(LineNr);
  407.   BeginPos := pos('<li><a href="',Line)+13;
  408.   EndPos := pos('">',Line);
  409.   MovieAddress := copy(Line,BeginPos,EndPos-BeginPos);
  410.   Delete(Line,1,EndPos + 1);
  411.   BeginPos := 1;
  412.   EndPos := -1;
  413.   MovieTitle := Line;
  414.   HTMLRemoveTags(MovieTitle);
  415.   HTMLDecode(Movietitle);
  416.   PickTreeAdd(MovieTitle, MovieAddress);
  417.  
  418.   NewLineNr := FindLine('<li><a href="',Page,LineNr+1);
  419.   if NewLineNr <> (LineNr + 1) then
  420.    LineNr := 2
  421.   else
  422.    LineNr := NewLineNr;
  423.  
  424.   if TheMovieAddress='*' then
  425.    TheMovieAddress := MovieAddress
  426.   else
  427.    TheMovieAddress := '';
  428. end;
  429. if TheMovieAddress='*' then TheMovieAddress := '';
  430. end;
  431.  
  432. begin
  433. if CheckVersion(3,4,0) then
  434. begin
  435.   MovieName := GetField(fieldTranslatedTitle);
  436.   if MovieName = '' then
  437.    MovieName := GetField(fieldOriginalTitle);
  438.   if Input('Yahoo!Cinema Espa±a', 'Introduce el tφtulo de la pelφcula (enter movie title):', MovieName) then
  439.   begin
  440.    AnalyzePage('http://es.search.movies.yahoo.com/search/movies_db_es?mt='+UrlEncode(MovieName));
  441.   end;
  442. end else
  443.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
  444. end.
  445.  
  446.  
  447.